import request from '@/config/axios'

// 车辆位置信息 VO
export interface VehicleLocationVO {
  id: number // 车辆ID
  driverId: number // 司机ID
  plateNo: string // 车牌号
  latitude: number // 纬度
  longitude: number // 经度
  speed: number // 速度 km/h
  direction: number // 方向角度
  status: number // 状态：0-离线，1-在线，2-忙碌
  updateTime: string // 位置更新时间
}

// 订单信息 VO
export interface OrderVO {
  id: number // 订单ID
  orderNo: string // 订单号
  passengerId: number // 乘客ID
  passengerName: string // 乘客姓名
  passengerPhone: string // 乘客电话
  startLatitude: number // 起点纬度
  startLongitude: number // 起点经度
  startAddress: string // 起点地址
  endLatitude: number // 终点纬度
  endLongitude: number // 终点经度
  endAddress: string // 终点地址
  distance: number // 距离 km
  estimatedPrice: number // 预估价格
  status: number // 订单状态：0-待接单，1-已接单，2-进行中，3-已完成，4-已取消
  driverId?: number // 司机ID（已分配时）
  createTime: string // 创建时间
}

// 调度统计信息 VO
export interface DispatchStatsVO {
  totalVehicles: number // 总车辆数
  onlineVehicles: number // 在线车辆数
  busyVehicles: number // 忙碌车辆数
  totalOrders: number // 总订单数
  pendingOrders: number // 待接单订单数
  completedOrders: number // 已完成订单数
  averageResponseTime: number // 平均响应时间（秒）
  totalRevenue: number // 总收入
}

// 调度操作 VO
export interface DispatchOperationVO {
  orderId: number // 订单ID
  driverId: number // 司机ID
  operationType: number // 操作类型：1-手动分配，2-自动分配，3-重新分配
  reason?: string // 操作原因
}

// 调度管理 API
export const DispatchApi = {
  // 获取实时车辆位置列表
  getVehicleLocations: async () => {
    return await request.get({ url: '/ride/dispatch/vehicle-locations' })
  },

  // 获取待调度订单列表
  getPendingOrders: async (params?: any) => {
    return await request.get({ url: '/ride/dispatch/pending-orders', params })
  },

  // 获取所有订单列表
  getOrderList: async (params: any) => {
    return await request.get({ url: '/ride/dispatch/orders', params })
  },

  // 获取调度统计信息
  getDispatchStats: async () => {
    return await request.get({ url: '/ride/dispatch/stats' })
  },

  // 手动分配订单给司机
  assignOrder: async (data: DispatchOperationVO) => {
    return await request.post({ url: '/ride/dispatch/assign', data })
  },

  // 自动调度订单
  autoDispatch: async (orderId: number) => {
    return await request.post({ url: `/ride/dispatch/auto/${orderId}` })
  },

  // 重新分配订单
  reassignOrder: async (data: DispatchOperationVO) => {
    return await request.post({ url: '/ride/dispatch/reassign', data })
  },

  // 取消订单分配
  cancelAssignment: async (orderId: number, reason: string) => {
    return await request.post({ url: `/ride/dispatch/cancel/${orderId}`, data: { reason } })
  },

  // 获取司机详细信息
  getDriverInfo: async (driverId: number) => {
    return await request.get({ url: `/ride/dispatch/driver/${driverId}` })
  },

  // 获取订单详细信息
  getOrderDetail: async (orderId: number) => {
    return await request.get({ url: `/ride/dispatch/order/${orderId}` })
  },

  // 获取调度历史记录
  getDispatchHistory: async (params: any) => {
    return await request.get({ url: '/ride/dispatch/history', params })
  },

  // 更新车辆状态
  updateVehicleStatus: async (vehicleId: number, status: number) => {
    return await request.put({ url: `/ride/dispatch/vehicle/${vehicleId}/status`, data: { status } })
  }
}